<!-- This comment will put IE 6, 7 and 8 in quirks mode -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>include/shark/Unsupervised/RBM/Sampling/GibbsOperator.h Source File</title>
<script type="text/javaScript" src="search/search.js"></script>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script>
<script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3.0.1/es5/tex-mml-chtml.js"></script>
<script src="../../mlstyle.js"></script>
<link href="../css/besser.css" rel="stylesheet" type="text/css"/>
</head>
<!-- pretty cool: each body gets an id tag which is the basename of the web page  -->
<!--              and allows for page-specific CSS. this is client-side scripted, -->
<!--              so the id will not yet show up in the served source code -->
<script type="text/javascript">
    jQuery(document).ready(function () {
        var url = jQuery(location).attr('href');
        var pname = url.substr(url.lastIndexOf("/")+1, url.lastIndexOf(".")-url.lastIndexOf("/")-1);
        jQuery('#this_url').html('<strong>' + pname + '</strong>');
        jQuery('body').attr('id', pname);
    });
</script>
<body>
    <div id="shark_old">
        <div id="wrap">
            <div id="header">
                <div id="site-name"><a href="../../sphinx_pages/build/html/index.html">Shark machine learning library</a></div>
                <ul id="nav">
                    <li >
                        <a href="../../sphinx_pages/build/html/rest_sources/installation.html">Installation</a>
                    </li>
		    <li >
                        <a href="../../sphinx_pages/build/html/rest_sources/tutorials/tutorials.html">Tutorials</a>
                    </li>
		    <li >
                        <a href="../../sphinx_pages/build/html/rest_sources/benchmark.html">Benchmarks</a>
                    </li>
                    <li class="active">
                        <a href="classes.html">Documentation</a>
                        <ul>
                            <li class="first"></li>
                            <li><a href="../../sphinx_pages/build/html/rest_sources/quickref/quickref.html">Quick references</a></li>
                            <li><a href="classes.html">Class list</a></li>
                            <li class="last"><a href="group__shark__globals.html">Global functions</a></li>
                        </ul>
                    </li>
                </ul>
            </div>
        </div>
    </div>
<div id="doxywrapper">
<!--
    <div id="global_doxytitle">Doxygen<br>Documentation:</div>
-->
    <div id="navrow_wrapper">
<!-- Generated by Doxygen 1.9.8 -->
<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_9d0c4981f10d03078bcfd5c74fe41ce8.html">shark</a></li><li class="navelem"><a class="el" href="dir_a5c28d1ea441e1efbe5bb0e42611a95c.html">Unsupervised</a></li><li class="navelem"><a class="el" href="dir_a0527f91ab46f49cba77a38bc385b222.html">RBM</a></li><li class="navelem"><a class="el" href="dir_306581424b7e31eb8fffb906acc727d1.html">Sampling</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="headertitle"><div class="title">GibbsOperator.h</div></div>
</div><!--header-->
<div class="contents">
<a href="_gibbs_operator_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno">    1</span><span class="comment">/*!</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno">    2</span><span class="comment"> * </span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno">    3</span><span class="comment"> *</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno">    4</span><span class="comment"> * \brief       Implements Block Gibbs Sampling</span></div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno">    5</span><span class="comment"> *</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno">    6</span><span class="comment"> * \author    O.Krause</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno">    7</span><span class="comment"> * \date        2014</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno">    8</span><span class="comment"> *</span></div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno">    9</span><span class="comment"> *</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno">   10</span><span class="comment"> * \par Copyright 1995-2017 Shark Development Team</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno">   11</span><span class="comment"> * </span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno">   12</span><span class="comment"> * &lt;BR&gt;&lt;HR&gt;</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno">   13</span><span class="comment"> * This file is part of Shark.</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno">   14</span><span class="comment"> * &lt;https://shark-ml.github.io/Shark/&gt;</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno">   15</span><span class="comment"> * </span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno">   16</span><span class="comment"> * Shark is free software: you can redistribute it and/or modify</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno">   17</span><span class="comment"> * it under the terms of the GNU Lesser General Public License as published </span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno">   18</span><span class="comment"> * by the Free Software Foundation, either version 3 of the License, or</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno">   19</span><span class="comment"> * (at your option) any later version.</span></div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno">   20</span><span class="comment"> * </span></div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno">   21</span><span class="comment"> * Shark is distributed in the hope that it will be useful,</span></div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno">   22</span><span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno">   23</span><span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno">   24</span><span class="comment"> * GNU Lesser General Public License for more details.</span></div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno">   25</span><span class="comment"> * </span></div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno">   26</span><span class="comment"> * You should have received a copy of the GNU Lesser General Public License</span></div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno">   27</span><span class="comment"> * along with Shark.  If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno">   28</span><span class="comment"> *</span></div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno">   29</span><span class="comment"> */</span></div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno">   30</span><span class="preprocessor">#ifndef SHARK_UNSUPERVISED_RBM_SAMPLING_GIBBSOPERATOR_H</span></div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno">   31</span><span class="preprocessor">#define SHARK_UNSUPERVISED_RBM_SAMPLING_GIBBSOPERATOR_H</span></div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno">   32</span> </div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno">   33</span><span class="preprocessor">#include &lt;<a class="code" href="_base_8h.html">shark/LinAlg/Base.h</a>&gt;</span></div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno">   34</span><span class="preprocessor">#include &quot;Impl/SampleTypes.h&quot;</span></div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno">   35</span><span class="keyword">namespace </span><a class="code hl_namespace" href="namespaceshark.html" title="AbstractMultiObjectiveOptimizer.">shark</a>{</div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno">   36</span>    <span class="comment"></span></div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno">   37</span><span class="comment">///\brief Implements Block Gibbs Sampling related transition operators for various temperatures.</span></div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno">   38</span><span class="comment">///</span></div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno">   39</span><span class="comment">/// The operator generates transitions from the current state of the neurons of an RBM </span></div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno">   40</span><span class="comment">/// to a new one and thus can be used to produce a Markov chain.</span></div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno">   41</span><span class="comment">/// The Gibbs Operator works by computing the conditional distribution of the hidden given the visible p(h|v) (or</span></div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno">   42</span><span class="comment">/// vice versa) and than samples the new hidden (or visible) state from it.</span></div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno">   43</span><span class="comment">///</span></div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno">   44</span><span class="comment">/// As an interesting twist, this operator can also be used to implement Flip-The-State sampling using two values alpha_visible</span></div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno">   45</span><span class="comment">/// and alpha_hidden both being between 0 and 1 (inclusively). for alpha_visible=alpha_hidden=0, pure gibbs sampling is performed.</span></div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno">   46</span><span class="comment">/// if for one of the layers, the value is not 0 a mixture of gibbs and flip-the-state sampling is performed. 1 equals to pure flip-the state</span></div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno">   47</span><span class="comment">/// sampling.</span></div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno">   48</span><span class="comment">/// The trick of this sampler is that it takes the previous state into account while sampling. If the current state has a low probability,</span></div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno">   49</span><span class="comment">/// the sampler jumps deterministically in another state with higher probability. This is counterbalanced by having a higher chance to jump away from</span></div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno">   50</span><span class="comment">/// this state.</span></div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno">   51</span><span class="comment"></span><span class="keyword">template</span>&lt; <span class="keyword">class</span> RBMType &gt;</div>
<div class="foldopen" id="foldopen00052" data-start="{" data-end="};">
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"><a class="line" href="classshark_1_1_gibbs_operator.html">   52</a></span><span class="keyword">class </span><a class="code hl_class" href="classshark_1_1_gibbs_operator.html" title="Implements Block Gibbs Sampling related transition operators for various temperatures.">GibbsOperator</a>{</div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno">   53</span><span class="keyword">public</span>:</div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"><a class="line" href="classshark_1_1_gibbs_operator.html#a9de44a00cd05bc1736b0503d25af6bd4">   54</a></span>    <span class="keyword">typedef</span> RBMType <a class="code hl_typedef" href="classshark_1_1_gibbs_operator.html#a9de44a00cd05bc1736b0503d25af6bd4">RBM</a>;</div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno">   55</span><span class="comment"></span> </div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno">   56</span><span class="comment">    ///The operator holds a &#39;sample&#39; of the visible and hidden neurons.</span></div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno">   57</span><span class="comment">    ///Such a sample does not only contain the states of the neurons but all other information</span></div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno">   58</span><span class="comment">    ///needed to approximate the gradient</span></div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno">   59</span><span class="comment"></span><span class="comment"></span> </div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno">   60</span><span class="comment">    ///\brief the type of a concrete sample.</span></div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno">   61</span><span class="comment"></span>    <span class="keyword">typedef</span> detail::GibbsSample&lt;</div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno">   62</span>        <span class="keyword">typename</span> RBMType::HiddenType::SufficientStatistics</div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"><a class="line" href="classshark_1_1_gibbs_operator.html#abcd709448bd459283e37ddde0d15e7fd">   63</a></span>    &gt; <a class="code hl_typedef" href="classshark_1_1_gibbs_operator.html#abcd709448bd459283e37ddde0d15e7fd" title="the type of a concrete sample.">HiddenSample</a>; <span class="comment"></span></div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno">   64</span><span class="comment">    ///\brief the type of a concrete sample.</span></div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno">   65</span><span class="comment"></span>    <span class="keyword">typedef</span> detail::GibbsSample&lt;</div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno">   66</span>        <span class="keyword">typename</span> RBMType::VisibleType::SufficientStatistics</div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"><a class="line" href="classshark_1_1_gibbs_operator.html#a41de7989f5420650970b7b4f024b7356">   67</a></span>    &gt; <a class="code hl_typedef" href="classshark_1_1_gibbs_operator.html#a41de7989f5420650970b7b4f024b7356" title="the type of a concrete sample.">VisibleSample</a>; </div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno">   68</span><span class="comment"></span> </div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno">   69</span><span class="comment">    ///\brief Represents the state of a batch of hidden samples and additional information required by the gradient.</span></div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno">   70</span><span class="comment">    ///</span></div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno">   71</span><span class="comment">    ///Aside from the hidden state, this structure can also hold the actual values </span></div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno">   72</span><span class="comment">    ///of the input, the phi-function and the sufficient statistics</span></div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"><a class="line" href="classshark_1_1_gibbs_operator.html#a5b57c0bacafe33d8d3ed614d4dd5d6dd">   73</a></span><span class="comment"></span>    <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code hl_struct" href="structshark_1_1_batch.html" title="class which helps using different batch types">Batch&lt;HiddenSample&gt;::type</a> <a class="code hl_typedef" href="classshark_1_1_gibbs_operator.html#a5b57c0bacafe33d8d3ed614d4dd5d6dd" title="Represents the state of a batch of hidden samples and additional information required by the gradient...">HiddenSampleBatch</a>;</div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno">   74</span><span class="comment"></span> </div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno">   75</span><span class="comment">    ///\brief Represents the state of the visible units and additional information required by the gradient.</span></div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno">   76</span><span class="comment">    ///</span></div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno">   77</span><span class="comment">    ///Aside from the visible state, this structure can also hold the actual values </span></div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno">   78</span><span class="comment">    ///of the hidden input, the phi-function and the sufficient statistics</span></div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"><a class="line" href="classshark_1_1_gibbs_operator.html#a0c5a9c2d399cebdb3e036a5803a1d28b">   79</a></span><span class="comment"></span>    <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code hl_struct" href="structshark_1_1_batch.html" title="class which helps using different batch types">Batch&lt;VisibleSample&gt;::type</a> <a class="code hl_typedef" href="classshark_1_1_gibbs_operator.html#a0c5a9c2d399cebdb3e036a5803a1d28b" title="Represents the state of the visible units and additional information required by the gradient.">VisibleSampleBatch</a>;</div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno">   80</span><span class="comment"></span> </div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno">   81</span><span class="comment">    ///\brief Constructs the Operator using an allready defined Distribution to sample from. </span></div>
<div class="foldopen" id="foldopen00082" data-start="{" data-end="}">
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"><a class="line" href="classshark_1_1_gibbs_operator.html#a0ec0371d4776aba60fc305b8f10c53fb">   82</a></span><span class="comment"></span>    <a class="code hl_function" href="classshark_1_1_gibbs_operator.html#a0ec0371d4776aba60fc305b8f10c53fb" title="Constructs the Operator using an allready defined Distribution to sample from.">GibbsOperator</a>(<a class="code hl_typedef" href="classshark_1_1_gibbs_operator.html#a9de44a00cd05bc1736b0503d25af6bd4">RBM</a>* <a class="code hl_function" href="classshark_1_1_gibbs_operator.html#a0f5eaa3488fc9152a26be8c4a9c11c41" title="Returns the internal RBM.">rbm</a>, <span class="keywordtype">double</span> alphaVisible = 0,<span class="keywordtype">double</span> alphaHidden = 0)</div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno">   83</span>    :mpe_rbm(<a class="code hl_function" href="classshark_1_1_gibbs_operator.html#a0f5eaa3488fc9152a26be8c4a9c11c41" title="Returns the internal RBM.">rbm</a>){</div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno">   84</span>        <a class="code hl_function" href="classshark_1_1_gibbs_operator.html#a5b86661eecf7572addeb9c6c2ea50711">setAlpha</a>(alphaVisible,alphaHidden);</div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno">   85</span>    }</div>
</div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno">   86</span>        <span class="comment"></span></div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno">   87</span><span class="comment">    ///\brief Returns the internal RBM.</span></div>
<div class="foldopen" id="foldopen00088" data-start="{" data-end="}">
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"><a class="line" href="classshark_1_1_gibbs_operator.html#a0f5eaa3488fc9152a26be8c4a9c11c41">   88</a></span><span class="comment"></span>    <a class="code hl_typedef" href="classshark_1_1_gibbs_operator.html#a9de44a00cd05bc1736b0503d25af6bd4">RBM</a>* <a class="code hl_function" href="classshark_1_1_gibbs_operator.html#a0f5eaa3488fc9152a26be8c4a9c11c41" title="Returns the internal RBM.">rbm</a>()<span class="keyword">const</span>{</div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno">   89</span>        <span class="keywordflow">return</span> mpe_rbm;</div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno">   90</span>    }</div>
</div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno">   91</span> </div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno">   92</span><span class="comment"></span> </div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno">   93</span><span class="comment">    ///\brief Calculates internal data needed for sampling the hidden units as well as requested information for the gradient.</span></div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno">   94</span><span class="comment">    ///</span></div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno">   95</span><span class="comment">    ///This function calculates the conditional probability distribution p(h|v) with inverse temperature beta for the whole batch of samples</span></div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno">   96</span><span class="comment">    ///Be aware that a change of temperature may occur between sampleVisible and precomputeHidden.</span></div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno">   97</span><span class="comment">    /// @param hiddenBatch the batch of hidden samples to be created</span></div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno">   98</span><span class="comment">    /// @param visibleBatch the batch of visible samples to be created</span></div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno">   99</span><span class="comment">    /// @param beta the vector of inverse temperatures</span></div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno">  100</span><span class="comment"></span>    <span class="keyword">template</span>&lt;<span class="keyword">class</span> BetaVector&gt;</div>
<div class="foldopen" id="foldopen00101" data-start="{" data-end="}">
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"><a class="line" href="classshark_1_1_gibbs_operator.html#a119948b017a9d29cdf5f10e20f4ed556">  101</a></span>    <span class="keywordtype">void</span> <a class="code hl_function" href="classshark_1_1_gibbs_operator.html#a119948b017a9d29cdf5f10e20f4ed556" title="Calculates internal data needed for sampling the hidden units as well as requested information for th...">precomputeHidden</a>(<a class="code hl_typedef" href="classshark_1_1_gibbs_operator.html#a5b57c0bacafe33d8d3ed614d4dd5d6dd" title="Represents the state of a batch of hidden samples and additional information required by the gradient...">HiddenSampleBatch</a>&amp; hiddenBatch, <a class="code hl_typedef" href="classshark_1_1_gibbs_operator.html#a0c5a9c2d399cebdb3e036a5803a1d28b" title="Represents the state of the visible units and additional information required by the gradient.">VisibleSampleBatch</a>&amp; visibleBatch, BetaVector <span class="keyword">const</span>&amp; beta)<span class="keyword">const</span>{</div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno">  102</span>        <a class="code hl_define" href="_exception_8h.html#a42a6a50e4d06c00d60fbca5333f40768">SIZE_CHECK</a>(visibleBatch.size()==hiddenBatch.size());</div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno">  103</span>        mpe_rbm-&gt;energy().inputHidden(hiddenBatch.input, visibleBatch.state);</div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno">  104</span>        <span class="comment">//calculate the sufficient statistics of the hidden units</span></div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno">  105</span>        mpe_rbm-&gt;hiddenNeurons().sufficientStatistics(hiddenBatch.input,hiddenBatch.statistics, beta);</div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno">  106</span>    }</div>
</div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno">  107</span> </div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno">  108</span><span class="comment"></span> </div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno">  109</span><span class="comment">    ///\brief calculates internal data needed for sampling the visible units as well as requested information for the gradient </span></div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno">  110</span><span class="comment">    ///</span></div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno">  111</span><span class="comment">    ///This function calculates the conditional probability distribution p(v|h) with inverse temperature beta for a whole batch of inputs.</span></div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno">  112</span><span class="comment">    ///Be aware that a change of temperature may occur between sampleHidden and precomputeVisible.</span></div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno">  113</span><span class="comment"></span>    <span class="keyword">template</span>&lt;<span class="keyword">class</span> BetaVector&gt;</div>
<div class="foldopen" id="foldopen00114" data-start="{" data-end="}">
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"><a class="line" href="classshark_1_1_gibbs_operator.html#a196f8674930d1d17709900801f48243d">  114</a></span>    <span class="keywordtype">void</span> <a class="code hl_function" href="classshark_1_1_gibbs_operator.html#a196f8674930d1d17709900801f48243d" title="calculates internal data needed for sampling the visible units as well as requested information for t...">precomputeVisible</a>(<a class="code hl_typedef" href="classshark_1_1_gibbs_operator.html#a5b57c0bacafe33d8d3ed614d4dd5d6dd" title="Represents the state of a batch of hidden samples and additional information required by the gradient...">HiddenSampleBatch</a>&amp; hiddenBatch, <a class="code hl_typedef" href="classshark_1_1_gibbs_operator.html#a0c5a9c2d399cebdb3e036a5803a1d28b" title="Represents the state of the visible units and additional information required by the gradient.">VisibleSampleBatch</a>&amp; visibleBatch, BetaVector <span class="keyword">const</span>&amp; beta)<span class="keyword">const</span>{</div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno">  115</span>        <a class="code hl_define" href="_exception_8h.html#a42a6a50e4d06c00d60fbca5333f40768">SIZE_CHECK</a>(visibleBatch.size()==hiddenBatch.size());</div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno">  116</span>        mpe_rbm-&gt;energy().inputVisible(visibleBatch.input, hiddenBatch.state);</div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno">  117</span>        <span class="comment">//calculate the sufficient statistics of the visible units for every element of the batch</span></div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno">  118</span>        mpe_rbm-&gt;visibleNeurons().sufficientStatistics(visibleBatch.input,visibleBatch.statistics, beta);</div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno">  119</span>        </div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno">  120</span>    }</div>
</div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno">  121</span><span class="comment"></span> </div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno">  122</span><span class="comment">    ///\brief Samples a new batch of states of the hidden units using their precomputed statistics.</span></div>
<div class="foldopen" id="foldopen00123" data-start="{" data-end="}">
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"><a class="line" href="classshark_1_1_gibbs_operator.html#ab653cc8b59970aa87a87c9c633ed3c14">  123</a></span><span class="comment"></span>    <span class="keywordtype">void</span> <a class="code hl_function" href="classshark_1_1_gibbs_operator.html#ab653cc8b59970aa87a87c9c633ed3c14" title="Samples a new batch of states of the hidden units using their precomputed statistics.">sampleHidden</a>(<a class="code hl_typedef" href="classshark_1_1_gibbs_operator.html#a5b57c0bacafe33d8d3ed614d4dd5d6dd" title="Represents the state of a batch of hidden samples and additional information required by the gradient...">HiddenSampleBatch</a>&amp; sampleBatch)<span class="keyword">const</span>{</div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno">  124</span>        <span class="comment">//sample state of the hidden neurons, input and statistics was allready computed by precompute</span></div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno">  125</span>        mpe_rbm-&gt;hiddenNeurons().sample(sampleBatch.statistics, sampleBatch.state, m_alphaHidden, mpe_rbm-&gt;rng());</div>
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno">  126</span>    }</div>
</div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno">  127</span> </div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno">  128</span><span class="comment"></span> </div>
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno">  129</span><span class="comment">    ///\brief Samples a new batch of states of the visible units using their precomputed statistics.</span></div>
<div class="foldopen" id="foldopen00130" data-start="{" data-end="}">
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"><a class="line" href="classshark_1_1_gibbs_operator.html#a4e93543dc92f11037c60bedb0451d9be">  130</a></span><span class="comment"></span>    <span class="keywordtype">void</span> <a class="code hl_function" href="classshark_1_1_gibbs_operator.html#a4e93543dc92f11037c60bedb0451d9be" title="Samples a new batch of states of the visible units using their precomputed statistics.">sampleVisible</a>(<a class="code hl_typedef" href="classshark_1_1_gibbs_operator.html#a0c5a9c2d399cebdb3e036a5803a1d28b" title="Represents the state of the visible units and additional information required by the gradient.">VisibleSampleBatch</a>&amp; sampleBatch)<span class="keyword">const</span>{</div>
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno">  131</span>        <span class="comment">//sample state of the visible neurons, input and statistics was allready computed by precompute</span></div>
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno">  132</span>        mpe_rbm-&gt;visibleNeurons().sample(sampleBatch.statistics, sampleBatch.state, m_alphaVisible, mpe_rbm-&gt;rng());</div>
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno">  133</span>    }</div>
</div>
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno">  134</span>    <span class="comment"></span></div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno">  135</span><span class="comment">    /// \brief Applies the Gibbs operator a number of times to a given sample.</span></div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno">  136</span><span class="comment">    ///</span></div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno">  137</span><span class="comment">    /// Performs one complete step for a sample by sampling first the hidden, than the visible and computing the probability of a hidden given the visible unit</span></div>
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno">  138</span><span class="comment">    /// That is, Given a State (v,h), computes p(v|h),draws v and then computes p(h|v) and draws h . this is repeated several times</span></div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno">  139</span><span class="comment"></span>    <span class="keyword">template</span>&lt;<span class="keyword">class</span> BetaVector&gt;</div>
<div class="foldopen" id="foldopen00140" data-start="{" data-end="}">
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"><a class="line" href="classshark_1_1_gibbs_operator.html#a25136037254735170f4abf1659a0c56f">  140</a></span>    <span class="keywordtype">void</span> <a class="code hl_function" href="classshark_1_1_gibbs_operator.html#a25136037254735170f4abf1659a0c56f" title="Applies the Gibbs operator a number of times to a given sample.">stepVH</a>(<a class="code hl_typedef" href="classshark_1_1_gibbs_operator.html#a5b57c0bacafe33d8d3ed614d4dd5d6dd" title="Represents the state of a batch of hidden samples and additional information required by the gradient...">HiddenSampleBatch</a>&amp; hiddenBatch, <a class="code hl_typedef" href="classshark_1_1_gibbs_operator.html#a0c5a9c2d399cebdb3e036a5803a1d28b" title="Represents the state of the visible units and additional information required by the gradient.">VisibleSampleBatch</a>&amp; visibleBatch, std::size_t numberOfSteps, BetaVector <span class="keyword">const</span>&amp; beta){</div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno">  141</span>        <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i=0; i != numberOfSteps; i++){</div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno">  142</span>            <a class="code hl_function" href="classshark_1_1_gibbs_operator.html#a196f8674930d1d17709900801f48243d" title="calculates internal data needed for sampling the visible units as well as requested information for t...">precomputeVisible</a>(hiddenBatch,visibleBatch,beta);</div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno">  143</span>            <a class="code hl_function" href="classshark_1_1_gibbs_operator.html#a4e93543dc92f11037c60bedb0451d9be" title="Samples a new batch of states of the visible units using their precomputed statistics.">sampleVisible</a>(visibleBatch);</div>
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno">  144</span>            <a class="code hl_function" href="classshark_1_1_gibbs_operator.html#a119948b017a9d29cdf5f10e20f4ed556" title="Calculates internal data needed for sampling the hidden units as well as requested information for th...">precomputeHidden</a>(hiddenBatch, visibleBatch,beta);</div>
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno">  145</span>            <a class="code hl_function" href="classshark_1_1_gibbs_operator.html#ab653cc8b59970aa87a87c9c633ed3c14" title="Samples a new batch of states of the hidden units using their precomputed statistics.">sampleHidden</a>(hiddenBatch);</div>
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno">  146</span>        }</div>
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno">  147</span>    }</div>
</div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno">  148</span><span class="comment"></span> </div>
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno">  149</span><span class="comment">    ///\brief Creates  hidden/visible sample pairs from the states of the visible neurons, i.e. sets the visible units to the given states and samples hidden states based on the states of the visible units. </span></div>
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno">  150</span><span class="comment">    /// This can directly be used to calculate the gradient.</span></div>
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno">  151</span><span class="comment">    ///</span></div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno">  152</span><span class="comment">    /// @param hiddenBatch the batch of hidden samples to be created</span></div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno">  153</span><span class="comment">    /// @param visibleBatch the batch of visible samples to be created</span></div>
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno">  154</span><span class="comment">    /// @param states the states of the visible neurons in the sample</span></div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno">  155</span><span class="comment">    /// @param beta the vector of inverse temperatures</span></div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno">  156</span><span class="comment"></span>    <span class="keyword">template</span>&lt;<span class="keyword">class</span> States, <span class="keyword">class</span> BetaVector&gt;</div>
<div class="foldopen" id="foldopen00157" data-start="{" data-end="}">
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"><a class="line" href="classshark_1_1_gibbs_operator.html#a6cf9658a4eb72ac3dc3dbaa44a51c726">  157</a></span>    <span class="keywordtype">void</span> <a class="code hl_function" href="classshark_1_1_gibbs_operator.html#a6cf9658a4eb72ac3dc3dbaa44a51c726" title="Creates hidden/visible sample pairs from the states of the visible neurons, i.e. sets the visible uni...">createSample</a>(<a class="code hl_typedef" href="classshark_1_1_gibbs_operator.html#a5b57c0bacafe33d8d3ed614d4dd5d6dd" title="Represents the state of a batch of hidden samples and additional information required by the gradient...">HiddenSampleBatch</a>&amp; hiddenBatch,<a class="code hl_typedef" href="classshark_1_1_gibbs_operator.html#a0c5a9c2d399cebdb3e036a5803a1d28b" title="Represents the state of the visible units and additional information required by the gradient.">VisibleSampleBatch</a>&amp; visibleBatch, States <span class="keyword">const</span>&amp; states, BetaVector <span class="keyword">const</span>&amp; beta)<span class="keyword">const</span>{</div>
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno">  158</span>        <a class="code hl_define" href="_exception_8h.html#a42a6a50e4d06c00d60fbca5333f40768">SIZE_CHECK</a>(<a class="code hl_function" href="namespaceshark.html#af2ab10364feb8a631e0866dcf2f1a4ad">batchSize</a>(states)==visibleBatch.size());</div>
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno">  159</span>        <a class="code hl_define" href="_exception_8h.html#a42a6a50e4d06c00d60fbca5333f40768">SIZE_CHECK</a>(hiddenBatch.size()==visibleBatch.size());</div>
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno">  160</span>        visibleBatch.state = states;</div>
<div class="line"><a id="l00161" name="l00161"></a><span class="lineno">  161</span>        </div>
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno">  162</span>        <a class="code hl_function" href="classshark_1_1_gibbs_operator.html#a119948b017a9d29cdf5f10e20f4ed556" title="Calculates internal data needed for sampling the hidden units as well as requested information for th...">precomputeHidden</a>(hiddenBatch,visibleBatch, beta);</div>
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno">  163</span>        <a class="code hl_function" href="classshark_1_1_gibbs_operator.html#ab653cc8b59970aa87a87c9c633ed3c14" title="Samples a new batch of states of the hidden units using their precomputed statistics.">sampleHidden</a>(hiddenBatch);</div>
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno">  164</span>    }</div>
</div>
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno">  165</span>    <span class="comment"></span></div>
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno">  166</span><span class="comment">    ///\brief Creates  hidden/visible sample pairs from the states of the visible neurons, i.e. sets the visible units to the given states and samples hidden states based on the states of the visible units. </span></div>
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno">  167</span><span class="comment">    /// This can directly be used to calculate the gradient.</span></div>
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno">  168</span><span class="comment">    ///</span></div>
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno">  169</span><span class="comment">    /// @param hiddenBatch the batch of hidden samples to be created</span></div>
<div class="line"><a id="l00170" name="l00170"></a><span class="lineno">  170</span><span class="comment">    /// @param visibleBatch the batch of visible samples to be created</span></div>
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno">  171</span><span class="comment">    /// @param states the states of the visible neurons in the sample</span></div>
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno">  172</span><span class="comment"></span>    <span class="keyword">template</span>&lt;<span class="keyword">class</span> States&gt;</div>
<div class="foldopen" id="foldopen00173" data-start="{" data-end="}">
<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"><a class="line" href="classshark_1_1_gibbs_operator.html#a638bbd0ab5f18d7064c2d6fb9a4ac1db">  173</a></span>    <span class="keywordtype">void</span> <a class="code hl_function" href="classshark_1_1_gibbs_operator.html#a638bbd0ab5f18d7064c2d6fb9a4ac1db" title="Creates hidden/visible sample pairs from the states of the visible neurons, i.e. sets the visible uni...">createSample</a>(<a class="code hl_typedef" href="classshark_1_1_gibbs_operator.html#a5b57c0bacafe33d8d3ed614d4dd5d6dd" title="Represents the state of a batch of hidden samples and additional information required by the gradient...">HiddenSampleBatch</a>&amp; hiddenBatch,<a class="code hl_typedef" href="classshark_1_1_gibbs_operator.html#a0c5a9c2d399cebdb3e036a5803a1d28b" title="Represents the state of the visible units and additional information required by the gradient.">VisibleSampleBatch</a>&amp; visibleBatch, States <span class="keyword">const</span>&amp; states)<span class="keyword">const</span>{</div>
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno">  174</span>        <a class="code hl_function" href="classshark_1_1_gibbs_operator.html#a6cf9658a4eb72ac3dc3dbaa44a51c726" title="Creates hidden/visible sample pairs from the states of the visible neurons, i.e. sets the visible uni...">createSample</a>(hiddenBatch,visibleBatch,states, blas::repeat(1.0,states.size1()));</div>
<div class="line"><a id="l00175" name="l00175"></a><span class="lineno">  175</span>    }</div>
</div>
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno">  176</span>    <span class="comment"></span></div>
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno">  177</span><span class="comment">    ///\brief Calculates the Energy of a sample of the visible and hidden neurons created by this chain.</span></div>
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno">  178</span><span class="comment">    /// </span></div>
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno">  179</span><span class="comment">    ///@param hiddenBatch the batch of samples of the hidden neurons </span></div>
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno">  180</span><span class="comment">    ///@param visibleBatch the batch of samples of the visible neurons (holding also the precomputed input of the visibles)</span></div>
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno">  181</span><span class="comment">    ///@return the value of the energy function </span></div>
<div class="foldopen" id="foldopen00182" data-start="{" data-end="}">
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"><a class="line" href="classshark_1_1_gibbs_operator.html#a8ba4607be52c15e7e69f8c10fa9ccf65">  182</a></span><span class="comment"></span>    RealVector <a class="code hl_function" href="classshark_1_1_gibbs_operator.html#a8ba4607be52c15e7e69f8c10fa9ccf65" title="Calculates the Energy of a sample of the visible and hidden neurons created by this chain.">calculateEnergy</a>(<a class="code hl_typedef" href="classshark_1_1_gibbs_operator.html#a5b57c0bacafe33d8d3ed614d4dd5d6dd" title="Represents the state of a batch of hidden samples and additional information required by the gradient...">HiddenSampleBatch</a> <span class="keyword">const</span>&amp; hiddenBatch, <a class="code hl_typedef" href="classshark_1_1_gibbs_operator.html#a0c5a9c2d399cebdb3e036a5803a1d28b" title="Represents the state of the visible units and additional information required by the gradient.">VisibleSampleBatch</a> <span class="keyword">const</span>&amp; visibleBatch)<span class="keyword">const</span>{</div>
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno">  183</span>        <span class="keywordflow">return</span> mpe_rbm-&gt;energy().energyFromHiddenInput(</div>
<div class="line"><a id="l00184" name="l00184"></a><span class="lineno">  184</span>            hiddenBatch.input, </div>
<div class="line"><a id="l00185" name="l00185"></a><span class="lineno">  185</span>            hiddenBatch.state, </div>
<div class="line"><a id="l00186" name="l00186"></a><span class="lineno">  186</span>            visibleBatch.state</div>
<div class="line"><a id="l00187" name="l00187"></a><span class="lineno">  187</span>        );</div>
<div class="line"><a id="l00188" name="l00188"></a><span class="lineno">  188</span>    }</div>
</div>
<div class="line"><a id="l00189" name="l00189"></a><span class="lineno">  189</span>    </div>
<div class="foldopen" id="foldopen00190" data-start="{" data-end="}">
<div class="line"><a id="l00190" name="l00190"></a><span class="lineno"><a class="line" href="classshark_1_1_gibbs_operator.html#a5b86661eecf7572addeb9c6c2ea50711">  190</a></span>    <span class="keywordtype">void</span> <a class="code hl_function" href="classshark_1_1_gibbs_operator.html#a5b86661eecf7572addeb9c6c2ea50711">setAlpha</a>(<span class="keywordtype">double</span> newAlphaVisible, <span class="keywordtype">double</span> newAlphaHidden){</div>
<div class="line"><a id="l00191" name="l00191"></a><span class="lineno">  191</span>        <a class="code hl_define" href="_exception_8h.html#adce1f80097c69010f5eab2618fa2e971">SHARK_RUNTIME_CHECK</a>(newAlphaVisible &gt;= 0.0, <span class="stringliteral">&quot;alpha &gt;= 0 not fulfilled for the visible layer&quot;</span>);</div>
<div class="line"><a id="l00192" name="l00192"></a><span class="lineno">  192</span>        <a class="code hl_define" href="_exception_8h.html#adce1f80097c69010f5eab2618fa2e971">SHARK_RUNTIME_CHECK</a>(newAlphaVisible &lt;= 1., <span class="stringliteral">&quot;alpha &lt;=1 not fulfilled for the visible layer&quot;</span>);</div>
<div class="line"><a id="l00193" name="l00193"></a><span class="lineno">  193</span>        <a class="code hl_define" href="_exception_8h.html#adce1f80097c69010f5eab2618fa2e971">SHARK_RUNTIME_CHECK</a>(newAlphaHidden &gt;= 0.0, <span class="stringliteral">&quot;alpha &gt;= 0 not fulfilled for the hidden layer&quot;</span>);</div>
<div class="line"><a id="l00194" name="l00194"></a><span class="lineno">  194</span>        <a class="code hl_define" href="_exception_8h.html#adce1f80097c69010f5eab2618fa2e971">SHARK_RUNTIME_CHECK</a>(newAlphaHidden &lt;= 1., <span class="stringliteral">&quot;alpha &lt;=1 not fulfilled for the hidden layer&quot;</span>);</div>
<div class="line"><a id="l00195" name="l00195"></a><span class="lineno">  195</span>        m_alphaVisible = newAlphaVisible;</div>
<div class="line"><a id="l00196" name="l00196"></a><span class="lineno">  196</span>        m_alphaHidden = newAlphaHidden;</div>
<div class="line"><a id="l00197" name="l00197"></a><span class="lineno">  197</span>    }</div>
</div>
<div class="line"><a id="l00198" name="l00198"></a><span class="lineno">  198</span><span class="keyword">private</span>:</div>
<div class="line"><a id="l00199" name="l00199"></a><span class="lineno">  199</span>    <a class="code hl_class" href="classshark_1_1_r_b_m.html" title="stub for the RBM class. at the moment it is just a holder of the parameter set and the Energy.">RBM</a>* mpe_rbm;</div>
<div class="line"><a id="l00200" name="l00200"></a><span class="lineno">  200</span>    <span class="keywordtype">double</span> m_alphaVisible;</div>
<div class="line"><a id="l00201" name="l00201"></a><span class="lineno">  201</span>    <span class="keywordtype">double</span> m_alphaHidden;</div>
<div class="line"><a id="l00202" name="l00202"></a><span class="lineno">  202</span>};</div>
</div>
<div class="line"><a id="l00203" name="l00203"></a><span class="lineno">  203</span> </div>
<div class="line"><a id="l00204" name="l00204"></a><span class="lineno">  204</span>    </div>
<div class="line"><a id="l00205" name="l00205"></a><span class="lineno">  205</span>}</div>
<div class="line"><a id="l00206" name="l00206"></a><span class="lineno">  206</span><span class="preprocessor">#endif</span></div>
</div><!-- fragment --></div><!-- contents -->
</div>
</body>
</html>
